前提条件
- 成功登录到您的 Linux 服务器。
- 具有
sudo权限(这是默认的,如果您之前创建了admin或root用户并赋予了sudo权限)。 - 已经获得了对方(或您自己)的 SSH 公钥内容。
请根据实际情况,将教程中的 目标用户名 替换为您想要设置密钥登录的实际用户名(例如 seconduser )。
服务器设置 SSH 密钥登录教程(导入公钥)
本教程指导您如何在 Linux 服务器上为指定用户设置 SSH 密钥登录。这是最安全、推荐的服务器访问方式。
请注意: 您需要先从要登录的用户那里获取他们的 完整 SSH 公钥内容。公钥通常以 ssh-rsa AAAAB3NzaC1yc2E... 或 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... 开头,并以用户的邮箱或注释结尾。
步骤一:登录到您的服务器
首先,使用您自己的 SSH 密钥登录到服务器。例如,如果您使用 root 用户登录:
ssh -i ~/.ssh/id_rsa root@您的服务器IP地址(请将 您的服务器IP地址 替换为实际 IP)
步骤二:创建或确认目标用户账户
如果您要为新用户设置密钥登录,您需要先在服务器上为他们创建一个系统账户。如果该用户账户已经存在,请跳过此步。
创建新用户账户(如果不存在):
将
bash目标用户名替换为实际的用户名
seconduserbashsudo adduser 目标用户名- 系统会提示您为该用户设置一个密码。请设置一个强密码。 这个密码在禁用 SSH 密码登录后不会用于 SSH 连接,但可能在用户执行
sudo命令时使用。 - 接着会提示您填写一些用户信息(例如姓名、电话等),这些是可选的,您可以直接一路按回车键跳过。
- 系统会提示您为该用户设置一个密码。请设置一个强密码。 这个密码在禁用 SSH 密码登录后不会用于 SSH 连接,但可能在用户执行
步骤三:为目标用户准备 .ssh 目录和 authorized_keys 文件
SSH 服务要求用户的公钥存放在其主目录下的 .ssh 目录中,并且这两个目录和文件的权限必须非常严格。
创建
.ssh目录并设置正确权限:Bash
# 创建 .ssh 目录 sudo mkdir -p /home/目标用户名/.ssh # 设置 .ssh 目录权限:只有所有者(目标用户)有读写执行权限 (700) sudo chmod 700 /home/目标用户名/.ssh # 更改 .ssh 目录的所有者为目标用户 sudo chown 目标用户名:目标用户名 /home/目标用户名/.ssh(请将
目标用户名替换为实际的用户名)
步骤四:将公钥添加到目标用户的 authorized_keys 文件
这是将公钥导入服务器的核心步骤。
将您已获取的公钥内容添加到
authorized_keys文件:- 请确保您已经从对方那里获得了完整的、正确的公钥字符串。
- 执行以下命令。将
[对方的完整公钥内容]替换为您已经复制的公钥字符串,并把目标用户名替换为实际的用户名。
Bash
echo "[对方的完整公钥内容]" | sudo tee -a /home/目标用户名/.ssh/authorized_keys示例: 如果对方给你的公钥是
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDl... user@example.com,那么命令就是:Bash
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDl... user@example.com" | sudo tee -a /home/目标用户名/.ssh/authorized_keystee -a命令会将公钥内容追加到文件的末尾,这样就不会覆盖文件中已有的其他公钥。
设置 authorized_keys 文件的正确权限和所有者:
这一步非常关键,SSH 服务会严格检查这些权限。
Bash
# 设置 authorized_keys 文件权限:只有所有者(目标用户)有读写权限 (600) sudo chmod 600 /home/目标用户名/.ssh/authorized_keys # 更改 authorized_keys 文件所有者为目标用户 sudo chown 目标用户名:目标用户名 /home/目标用户名/.ssh/authorized_keys(请将
目标用户名替换为实际的用户名)
步骤五:赋予目标用户 sudo 权限(可选)
如果这个新用户需要执行管理命令(例如安装软件、重启服务),您需要将他们添加到 sudo 用户组。如果他们只是普通用户,不需要管理员权限,可以跳过此步。
对于 Ubuntu/Debian 系统:
Bash
sudo usermod -aG sudo 目标用户名对于 CentOS/RHEL 系统:
Bash
sudo usermod -aG wheel 目标用户名(请将
目标用户名替换为实际的用户名)
步骤六:通知对方进行测试登录
完成以上所有步骤后,您就可以通知对方,让他们在自己的电脑上尝试使用他们的私钥登录服务器了。
对方在自己的电脑上执行的登录命令示例:
Bash
ssh -i /path/to/their/private_key 目标用户名@您的服务器IP地址例如:ssh -i ~/.ssh/id_rsa seconduser@47.122.153.165
- 如果对方的私钥有密码短语,系统会提示他们输入。
- 如果是第一次连接该服务器,对方可能需要输入
yes来确认服务器指纹。
完成这些步骤后,该用户就能够通过他们的 SSH 密钥安全地登录到服务器了。